package com.bookmall.cart.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.bookmall.cart.domain.OrderInfo;
import com.bookmall.cart.domain.vo.*;
import com.ruoyi.common.core.exception.ServiceException;

import java.util.List;
import java.util.concurrent.ExecutionException;

/**
 * @Description:
 * @Author 胡菜鸡
 * @Create 2022-04-21-10:21
 */
public interface IOrderInfoService extends IService<OrderInfo> {
    /**
     * 获取订单确认页需要的数据
     * @author 胡菜鸡
     * @date 2022/4/21 17:25
     */
    OrderInfoVo getOrder() throws ExecutionException, InterruptedException;

    /**
     * 提交订单
     * @author 胡菜鸡
     * @date 2022/4/24 21:09
     */
    OrderResponseVo submitOrder(OrderSubmitVo orderSubmitVo) throws ServiceException;

    /**
     * 订单已过期，关闭订单
     * @author 胡菜鸡
     * @date 2022/4/26 14:05
     */
    void closeOrder(OrderResponseVo orderResponseVo);

    /**
     * 获取当前订单的支付信息
     * @author 胡菜鸡
     * @date 2022/4/26 16:15
     */
    PayVo getOrderPay(String orderSn);

    /**
     * 根据会员id获取该会员所有订单及对应订单项信息
     * @author 胡菜鸡
     * @date 2022/4/27 15:52
     */
    OrderPageResVo getOrderByMemberId(String memberId, PersonParamVo personParamVo);

    /**
     * 处理支付宝支付后的数据
     * @author 胡菜鸡
     * @date 2022/4/28 14:51
     * @param payAsyncVo 支付完成的异步VO
     * @return success 成功
     * @return fail 失败
     */
    String handlePayResult(PayAsyncVo payAsyncVo) throws ServiceException;

    /**
     * 根据订单号修改订单状态
     * @author 胡菜鸡
     * @date 2022/4/28 15:11
     */
    Boolean updateOrderStatus(String orderSn, Integer status);
}
